define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function () {
            $(".btn-add").data("area", ["100%", "100%"]); //添加
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'bushen/gui/index' + location.search,
                    add_url: 'bushen/gui/add',
                    // edit_url: 'bushen/gui/edit',
                    // del_url: 'bushen/gui/del',
                    multi_url: 'bushen/gui/multi',
                    import_url: 'bushen/gui/import',
                    table: 'diaodu',
                }
            });

            var table = $("#table");

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'baoan.id',
                fixedColumns: true,
                fixedRightNumber: 1,
                searchFormTemplate: 'hejia',
                search:false,
                columns: [
                    [
                        {checkbox: true},
                        // {field: 'id', title: __('Id')},
                        // {field: 'gs_type', title: __('Gs_type'),operate: false},
                        {field: 'baoan_id', title: __('Baoan_id'), operate: 'LIKE'},
                        {
                            field: 'baoan_time',
                            title: __('Baoan_time'),
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            autocomplete: false,
                            formatter: Table.api.formatter.datetime
                        },
                        {
                            field: 'chuxian_time',
                            title: __('Chuxian_time'),
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            autocomplete: false,
                            formatter: Table.api.formatter.datetime
                        },
                        {field: 'phone', title: __('Phone'), operate: false},
                        {field: 'tong_number', title: __('Tong_number'), operate: 'LIKE'},
                        {field: 'car_num', title: __('Car_num'), operate: 'LIKE'},
                        {field: 'car_vin', title: __('Car_vin'), operate: 'LIKE'},
                        {field: 'learned_name', title: __('Learned_name'), operate: 'LIKE'},
                        {
                            field: 'yw_hetong_time',
                            title: __('Yw_hetong_time'),
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            autocomplete: false,
                            formatter: Table.api.formatter.datetime, datetimeFormat: "YYYY-MM-DD"
                        },
                        {
                            field: 'plan_endtime',
                            title: __('Plan_endtime'),
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            autocomplete: false,
                            formatter: Table.api.formatter.datetime, datetimeFormat: "YYYY-MM-DD"
                        },
                        {field: 'chakan_ren', title: __('Chakan_ren'), operate: 'LIKE'},
                        {field: 'buchang_money', title: __('Buchang_money'), operate: false},
                        {
                            field: 'baoan_status', title: __('Baoan_status'),
                            searchList: {
                                0: __('未结案'),
                                1: __('已结案'),
                            }, formatter: Table.api.formatter.label
                        },
                        {field: 'task_1_count', title: __('本车定损'), operate: false},
                        {field: 'task_2_count', title: __('三者财物损失'), operate: false},
                        {field: 'task_3_count', title: __('三者车损'), operate: false},
                        {field: 'task_4_count', title: __('本车人伤'), operate: false},
                        {field: 'task_5_count', title: __('三责人伤'), operate: false},
                        {
                            field: 'operate',
                            title: __('Operate'),
                            table: table,
                            events: Table.api.events.operate,
                            formatter: Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'details',
                                    text: "详情",
                                    classname: 'btn btn-info btn-xs btn-dialog',
                                    icon: '',
                                    url: function (row) {
                                        // 动态生成 URL
                                        return 'bushen/gui/shenhe?type=' + row.type + '&id=' + row.id;
                                    },
                                    extend: 'data-area=["100%","100%"]',
                                    visible: function (row) {
                                        //返回true时按钮显示,返回false隐藏
                                        return true;
                                    }
                                }
                            ]
                        }
                    ]
                ]
            });
            // 监听选项卡切换事件
            $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
                // 获取当前选中的 <a> 标签的 data-value 属性值
                var selectedValue = $(e.target).attr('data-value');

                // 获取当前选中的 <a> 标签的文本内容
                var selectedText = $(e.target).text();
                $("#baoan_status").val(selectedValue);
                // 输出结果
                // console.log("选中的 data-value: " + selectedValue);
                // console.log("选中的文本内容: " + selectedText);
            });
            // 为表格绑定事件
            Table.api.bindevent(table);

        },
        add: function () {
            Controller.api.bindevent();
        },
        edit: function () {
            Controller.api.bindevent();
        },
        diaodu: function () {
            Controller.api.bindevent();
        },
        shenhe: function () {
            get_class_file(0)

            //绑定事件
            function refresh() {
                //读取选中的条目
                $('#treeview').on("changed.jstree", function (e, data) {
                    var node = data.node;
                    if (node.parent == '#') {
                        var instance = $('#treeview').jstree(true); // 获取jstree实例
                        var selectedNode = instance.get_selected(true)[0]; // 获取选中的节点实例
                        if (selectedNode) {
                            instance.toggle_node(selectedNode); // 折叠/展开节点
                        }
                        if (data.selected.length) { // 如果有节点被选中
                            // 取消选中最后一个被选中的节点（你也可以选择其他逻辑）
                            var lastSelected = data.instance.get_selected(true)[data.selected.length - 1]; // 获取最后一个选中的节点实例
                            data.instance.deselect_node(lastSelected); // 取消选中该节点
                        }
                    } else {
                        $('#class_id').val(node.id)
                        $('#category-files').val(node.id)
                        $("#ss").hide()
                    }
                    get_class_file(node.id)
                });
                //监听图片分类修改
                $('#treeview').on("rename_node.jstree", function (e, data) {
                    var node = data.node
                    if (node.text != node.original.text) {
                        updateNodeData(node.id, node.text); // 调用更新函数并传递新数据
                    }
                });
            }

            //ajax获取数据
            function ajax() {
                //渲染权限节点树
                //变更级别后需要重建节点树
                $.ajax({
                    url: "buchang/chakan/file_class",
                    type: 'post',
                    dataType: 'json',
                    data: {luru_id: $('#ids').val()},
                    success: function (ret) {
                        if (ret.hasOwnProperty("code")) {
                            var data = ret.hasOwnProperty("data") && ret.data != "" ? ret.data : "";
                            if (ret.code === 1) {
                                //销毁已有的节点树
                                $("#treeview").jstree("destroy");
                                Controller.api.rendertree(data);
                                refresh();//重新绑定事件
                            } else {
                                Backend.api.toastr.error(ret.msg);
                            }
                        }
                    }, error: function (e) {
                        Backend.api.toastr.error(e.message);
                    }
                });
            }

            //修改图片分类
            function updateNodeData(nodeId, newData) {
                $.ajax({
                    url: 'buchang/chakan/edit_class', // 你的后端接口URL
                    type: 'POST', // 或 'PUT'，取决于你的API设计
                    data: {
                        nodeId: nodeId,
                        data: newData, // 发送新的数据到服务器
                        id: $('#ids').val()
                    },
                    success: function (ret) {
                        if (ret.hasOwnProperty("code")) {
                            var data = ret.hasOwnProperty("data") && ret.data != "" ? ret.data : "";
                            if (ret.code === 1) {
                                // 更改节点的文本并重绘该节点
                                var node = $('#treeview').jstree(true).get_node(nodeId);
                                node.text = ret.data[0].text;
                                $('#treeview').jstree(true).redraw_node(node);
                                layer.msg('修改成功', {time: 1000, icon: 1})
                            } else {
                                layer.msg(ret.msg, {time: 1000, icon: 2})
                            }
                        }
                    },
                    error: function (error) {
                        // 处理错误情况
                        layer.msg(error, {time: 1000, icon: 2})
                    }
                });
            }

            //根据分类id获取图片
            function get_class_file(class_id) {
                $.ajax({
                    url: 'buchang/chakan/get_files', // 你的后端接口URL
                    type: 'POST', // 或 'PUT'，取决于你的API设计
                    data: {
                        class_id: class_id, // 发送新的数据到服务器
                        id: $('#ids').val(),
                        keyword: $('#keyword').value
                    },
                    success: function (ret) {
                        if (ret.hasOwnProperty("code")) {
                            var data = ret.hasOwnProperty("data") && ret.data != "" ? ret.data : "";
                            $('#c-files').val('');
                            $('#p-files').html('');
                            if (ret.code === 1) {
                                $('#c-files').val(data);
                                // var file1 = data.split(',')
                                var file1 = data
                                var htmls = '';
                                for (var i = 0; i < file1.length; i++) {
                                    htmls += '<li class="col-xs-3"><a data-magnify="gallery" data-src="' + file1[i].url + '" data-url="' + file1[i].url + '" target="_blank" class="thumbnail"><img src="' + file1[i].url + '"  onerror="this.src=\'' + Fast.api.fixurl("ajax/icon") + '?suffix=<%=suffix%>\';this.onerror=null;" class="img-responsive"></a></li>'
                                }
                                $('#p-files').html(htmls)
                            }
                        }
                    },
                    error: function (error) {
                        // 处理错误情况
                        layer.alert(error)
                    }
                });
            }

            //上传完成后刷新父窗口
            $(".faupload").data("upload-complete", function (files) {
                ajax()
                get_class_file($('#class_id').val())
            });
            // 获取上传类别
            $("#faupload-files,#faupload-files-chunking").data("category", function (file) {
                return $("#class_id").val();
            });
            //生成分类树
            ajax()

            //展示全部
            $("#all_files").on("click", function (e) {
                get_class_file('')
            })
            $("#add_ren").on("click", function (e) {
                add_files_class('人伤')
            })
            $("#add_car").on("click", function (e) {
                add_files_class('维修车辆')
            })

            //添加分类
            function add_files_class(title) {
                $.ajax({
                    url: 'buchang/chakan/add_files_class', // 你的后端接口URL
                    type: 'POST', // 或 'PUT'，取决于你的API设计
                    data: {
                        title: title, // 发送新的数据到服务器
                        ids: $('#ids').val(),
                    },
                    success: function (ret) {
                        ajax()
                        layer.msg('添加成功', {time: 1000, icon: 1})
                    },
                    error: function (error) {
                        // 处理错误情况
                        layer.msg(error, {time: 1000, icon: 2})
                    }
                });
            }

            Controller.api.bindevent();
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            },
            //初始化jstree
            rendertree: function (content) {
                $("#treeview")
                    .on('redraw.jstree', function (e) {
                        $(".layer-footer").attr("domrefresh", Math.random());
                    })
                    .jstree({
                        "themes": {"stripes": true},
                        "checkbox": {
                            "keep_selected_style": false,
                        },
                        "types": {
                            "root": {
                                "icon": "fa fa-folder-open",
                            },
                            "menu": {
                                "icon": "fa fa-folder-open",
                            },
                            "file": {
                                "icon": "fa fa-file-o",
                            }
                        },
                        "plugins": ["contextmenu", "types"],
                        "core": {
                            'check_callback': true,
                            "data": content
                        },
                        "contextmenu": {  // 定义右键菜单
                            'items': function (node) {
                                return {
                                    "update": {
                                        "label": "修改",
                                        "action": function (data) {
                                            var inst = $.jstree.reference(data.reference);
                                            var obj = inst.get_node(data.reference);
                                            inst.edit(obj);
                                        }
                                    },
                                }
                            },
                        }

                    });
            },
        }
    };
    return Controller;
});
